package  main.java.leetcode.editor.cn;
//2022-12-01 16:18:17
//给定一个 24 小时制（小时:分钟 "HH:MM"）的时间列表，找出列表中任意两个时间的最小时间差并以分钟数表示。 
//
// 
//
// 示例 1： 
//
// 
//输入：timePoints = ["23:59","00:00"]
//输出：1
// 
//
// 示例 2： 
//
// 
//输入：timePoints = ["00:00","23:59","00:00"]
//输出：0
// 
//
// 
//
// 提示： 
//
// 
// 2 <= timePoints <= 2 * 10⁴ 
// timePoints[i] 格式为 "HH:MM" 
// 
//
// 
//
// 注意：本题与主站 539 题相同： https://leetcode-cn.com/problems/minimum-time-difference/ 
// Related Topics 数组 数学 字符串 排序 👍 36 👎 0

import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;

class Five69nqc {
    public static void main(String[] args) {
        //创建该题目的对象方便调用
        Solution solution = new Five69nqc().new Solution();
    }
    //leetcode submit region begin(Prohibit modification and deletion)
class Solution {
    public int findMinDifference(List<String> timePoints) {
        List<Integer> timeToInt = new LinkedList<>();

        for(int i = 0;i<timePoints.size();i++){
            String[] time = timePoints.get(i).split("");
            int temp = 0;
//            if(time[0] == "0"){
//                String cur = time[1];
//                temp = Integer.parseInt(cur)*60;
//                if(time[3] == "0"){
//                    temp += Integer.parseInt(time[4]);
//                }else {
//                    temp += Integer.parseInt(time[3])*10+Integer.parseInt(time[4]);
//                }
//            }else {
//                temp = (Integer.parseInt(time[0])*10+Integer.parseInt(time[1]))*60;
//                if(time[3] == "0"){
//                    temp += Integer.parseInt(time[4]);
//                }else {
//                    temp += Integer.parseInt(time[3])*10+Integer.parseInt(time[4]);
//                }
//            }
            if(time[0] == "0"){
                String cur = time[1];
                temp = Integer.parseInt(cur)*60;
            }else {
                temp = (Integer.parseInt(time[0])*10+Integer.parseInt(time[1]))*60;
            }
            if(time[3] == "0"){
                temp += Integer.parseInt(time[4]);
            }else {
                temp += Integer.parseInt(time[3])*10+Integer.parseInt(time[4]);
            }
            timeToInt.add(temp);
        }
        int[] arr = new int[timeToInt.size()];
        for(int i = 0;i<timeToInt.size();i++){
            arr[i] = timeToInt.get(i);
        }
        int shortTime = Integer.MAX_VALUE;
        Arrays.sort(arr);
        for(int i = 1;i<arr.length;i++){
            shortTime = Math.min(shortTime,arr[i]-arr[i-1]);
        }
        shortTime = Math.min(arr[0]-arr[arr.length-1]+24*60,shortTime);
        return shortTime;
    }
}
//leetcode submit region end(Prohibit modification and deletion)

}
